/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2022-04-05     donghaomin       the first version
 */
#ifndef APPLICATIONS_DAIG_DAIG_H_
#define APPLICATIONS_DAIG_DAIG_H_

#include "usr_data.h"

#define OVERTIME_TIMES (unsigned char)0x0A

// 诊断返回值
typedef enum ERRORNUM {
    DIAG_OK          = 0x00,               // 运行正常
    DIAG_FALSE       = 0x01,               // 运行一般失败
    DIAG_DATA_ERR    = 0x02,               // 数据错误,空指针
    DIAG_OUT_RANGE   = 0x03,               // 超出范围
    DIAG_CMD_ERR     = 0x04,               // 指令错误
    DIAG_BLUE_ERR    = 0x05,               // 蓝牙硬件错误
    DIAG_OVERTIM_ERR = 0x05,               // 访问超时
    DIAG_SUM
}errornum;

/**
 * 一级主功能ID
 * */
typedef enum FUNCTION_ID {
    BLUE_TOOTH_IMG   = 0x00,               // 蓝牙信息获取
    TEMP_DATA_OPT    = 0x01,               // 温度信息获取，删除
    DIAG_CODE_OPT    = 0x02,               // 诊断ID
    FUNCTION_ID_SUM                        // ID总数
}d_function_id;

/**
 * 二级子功能ID,蓝牙
 * */
typedef enum SUB_BULE_FUNCTION_ID {
    BLUE_TOOTH_CON    = 0x00,               // 蓝牙连接状态
    BLUE_TOOTH_LEV    = 0x01,               // 蓝牙信号强度
    BLUE_TOOTH_OK     = 0x02,               // 蓝牙是否启动
    BLUE_TOOTH_SUM
}d_blue_sub_function_id;

/**
 * 二级子功能ID,温度数据
 * */
typedef enum SUB_TEMP_FUNCTION_ID {
    TEMP_GET          = 0x00,                 // 获取温度数据
    TEMP_CLEARN       = 0x01,                 // 清除温度数据
    TEMP_COUNT        = 0x02,                 // 当前温度数量
    TEMP_SUM
}d_temp_sub_function_id;

/**
 * 接收蓝牙数据的缓冲区
 * */
typedef struct Dong_BLUETOOTH_RECIVE_CMD{
    unsigned char  really;                 // 判断是否当前有数据(你也可以理解为器件ID)，有数据的话就是0x01，没有就是0x00，也就是说蓝牙发送数据的时候第一位必须是0x01
    d_function_id  function_id;            // 蓝牙接收数据的主功能id
    unsigned char  sub_function_id;    // 蓝牙接收数据的二级功能id
    unsigned char  datalenght;             // 蓝牙发送过来的数据长度
    unsigned char  data[6];                // 蓝牙发送过来的数据6个byte
}d_bule_revcmd;

extern d_bule_revcmd d_revbuffer;        // 蓝牙通信数据缓冲buffer

extern errornum buletooth_img_Diag(void* data);
extern errornum temperature_data_Diag(void* data);
extern errornum diagnosis_data_Diag(void* data);
extern errornum bule_revdata_Diag(void* data);

#endif /* APPLICATIONS_DAIG_DAIG_H_ */
